#!/usr/bin/env python
# -*- coding: UTF8 	-*-

from GladeConnect import GladeConnect
import gtk
import sys
import dialogos
import debugwindow 
from psycopg2 import connect
from wnSector import wnSector
from wnFicha import wnFicha
from wnTipoFicha import wnTipoFicha
from wnTipoDocumento import wnTipoDocumento
from wnCuartel import wnCuartel
from wnInsumo import wnInsumo
from wnEstanque import wnEstanque
from wnTipoControl import wnTipoControl
from wnTipoAplicaciones import wnTipoAplicacion
from wnRecepcionInsumo import wnRecepcionInsumo
from wnRecepcionUva import wnRecepcionUva
from wnMaceracion import wnMaceracion
from wnFermentacion import wnFermentacion
from wnVariedad import wnVariedad
from wnUnidad import wnUnidad
from wnProducto import wnProducto
from wnMezcla import wnMezcla
from wnEmbotellado import wnEmbotellado
#from wnCosecha import wnCosecha
from wnStock import wnStockInsumo
from wnStockEstanques import wnStockEstanques
from wnCosechado import wnCosechado
from wnMovimientoEstanque import wnMovimientoEstanque
from wnDespacho import wnDespacho
from trazabilidad import vboxTrazabilidad
from wnTemporada import wnTemporada


class Traza(GladeConnect):
        
    def __init__(self):
        GladeConnect.__init__(self, "./glade/wnTraza.glade")
        self.abre_coneccion()
        #self.cnx.autocommit()
        self.wnTraza.maximize()
        self.frm_padre = self.wnTraza
        self.wins = {}

    def abre_coneccion(self):
        try:
            f = open("coneccion.rc", 'r')
            l = f.readline()[:-1]
            self.cnx = connect(l)
            f.close()
            print "Conección por archivo"
        except:
            self.cnx = connect("dbname=traza")
            print "Conección base"
    
    def on_wnTraza_delete_event(self, widget, event):
        gtk.main_quit()
    
    def add_tab(self, widget, label):
        p = -1
        if not self.wins.has_key(label):
            l = gtk.Label('')
            l.set_text_with_mnemonic(label)
            self.ntbTraza.append_page(widget, l)
            widget.show()
            self.wins[label] = (widget, len(self.wins))
        else:
            self.ntbTraza.show_all()
            self.ntbTraza.set_current_page(self.wins[label][1])
            a = self.ntbTraza.get_current_page()
        p = len(self.wins) - 1
        self.ntbTraza.set_current_page(-1)
            
    def remove_tab(self, label):
        self.ntbTraza.remove(self.wins[label][0])
        del self.wins[label]
    
    def on_mnuUnidad_activate(self, widget, *args):
        unidad = wnUnidad(self.cnx, self, "vboxUnidad")
        self.add_tab(unidad.vboxUnidad, "Unidad")
        return
    
    def on_mnuCosecha_activate(self, widget, *args):
        cosecha = wnCosecha(self.cnx, self, "vboxCosecha")
        self.add_tab(cosecha.vboxCosecha, "Cosecha")
        return

    def on_mnuVariedad_activate(self, widget, *args):
        variedad = wnVariedad(self.cnx, self, "vboxVariedad")
        self.add_tab(variedad.vboxVariedad, "Variedad")
        return
    
    def on_mnuSector_activate(self, widget, *args):
        sector = wnSector(self.cnx, self, "vboxSector")
        self.add_tab(sector.vboxSector, "Sector")
        return
    
    def on_mnuFicha_activate(self, widget, *args):
        ficha = wnFicha(self.cnx, self, "vboxFicha")
        self.add_tab(ficha.vboxFicha, "Ficha")
        return
    
    def on_mnuTipoFicha_activate(self, widget, *args):
        tipo_ficha = wnTipoFicha(self.cnx, self, "vboxTipoFicha")
        self.add_tab(tipo_ficha.vboxTipoFicha, "Tipo Ficha")
        return
    
    def on_mnuTipoDocumento_activate(self, widget, *args):
        tipo_documento = wnTipoDocumento(self.cnx, self, "vboxTipoDocumento")
        self.add_tab(tipo_documento.vboxTipoDocumento, "Tipo Documento")
        return
    
    def on_mnuCuartel_activate(self, widget, *args):
        cuartel = wnCuartel(self.cnx, self, "vboxCuartel")
        self.add_tab(cuartel.vboxCuartel, "Cuartel")
        return
    
    def on_mnuInsumo_activate(self, widget, *args):
        insumo = wnInsumo(self.cnx, self, "vboxInsumo")
        self.add_tab(insumo.vboxInsumo, "Insumo")
        return
    
    def on_mnuProducto_activate(self, widget, *args):
        producto = wnProducto(self.cnx, self, "vboxProducto")
        self.add_tab(producto.vboxProducto, "Producto")
        return
    
    def on_mnuEstanque_activate(self, widget, *args):
        estanque = wnEstanque(self.cnx, self, "vboxEstanque")
        self.add_tab(estanque.vboxEstanque, "Estanque")
        return
    
    def on_mnuTipoAplicacion_activate(self, widget, *args):
        tipo = wnTipoAplicacion(self.cnx, self, "vboxTipoAplicacion")
        self.add_tab(tipo.vboxTipoAplicacion, "Tipo Aplicación")
        return
    
    def on_mnuTipoControl_activate(self, widget, *args):
        tipo = wnTipoControl(self.cnx, self, "vboxTipoControl")
        self.add_tab(tipo.vboxTipoControl, "Tipo Control")
        return
    
    def on_mnuRecepcionInsumo_activate(self, widget, *args):
        recepcion = wnRecepcionInsumo(self.cnx, self, "vboxRecepcionInsumo")
        self.add_tab(recepcion.vboxRecepcionInsumo, "Recepción Insumo")
        return
    
    def on_mnuRecepcionUva_activate(self, widget, *args):
        recepcion = wnRecepcionUva(self.cnx, self, "vboxProceso")
        self.add_tab(recepcion.vboxProceso, "Recepción uva")
        return
    
    def on_mnuMaceracion_activate(self, widget, *args):
        maceracion = wnMaceracion(self.cnx, self, "vboxProceso")
        self.add_tab(maceracion.vboxProceso, "Maceración")
        return
    
    def on_mnuFermentacion_activate(self, widget, *args):
        fermentacion = wnFermentacion(self.cnx, self, "vboxProceso")
        self.add_tab(fermentacion.vboxProceso, "Fermentación")
        return
    
    def on_mnuMezcla_activate(self, widget, *args):
        mezcla = wnMezcla(self.cnx, self, "vboxProceso")
        self.add_tab(mezcla.vboxProceso, "Mezcla")
        return
    
    def on_mnuEmbotellado_activate(self, widget, *args):
        embotellado = wnEmbotellado(self.cnx, self, "vboxProceso")
        self.add_tab(embotellado.vboxProceso, "Embotellado")
        return
    
    def on_mnuStock_activate(self, widget, *args):
        stock = wnStockInsumo(self.cnx, self, "vboxStock")
        self.add_tab(stock.vboxStock, "Stock de Insumo en Bodega")
        return
    
    def on_mnuCosechado_activate(self, widget, *args):
        cosechado = wnCosechado(self.cnx, self, "vboxCosechado")
        self.add_tab(cosechado.vboxCosechado, "Cosechado por Cuartel")
        return
    
    def on_mnuStockEstanque_activate(self, widget, *args):
        stockEstanque = wnStockEstanques(self.cnx, self, "vboxStock")
        self.add_tab(stockEstanque.vboxStock, "Stock en Estanques")
        return

    def on_mnuDespacho_activate(self, widget, *args):
        despacho = wnDespacho(self.cnx, self, "vboxDespacho")
        self.add_tab(despacho.vboxDespacho, "Despacho")
        
    def on_mnuMovimiento_activate(self, widget, *args):
        mov = wnMovimientoEstanque(self.cnx, self, "vboxCosechado")
        self.add_tab(mov.vboxCosechado, "Movimientos por Estanque")
    
    def on_mnuArbolTrazabilidad_activate(self, widget, *args):
        arbol = vboxTrazabilidad(self.cnx, self, "vboxTrazabilidad")
        self.add_tab(arbol.vboxTrazabilidad, "Arbol de Trazabilidad")
        return
    
    def on_mnuTemporada_activate(self, widget, *args):
        temporada = wnTemporada(self.cnx, self, "vboxTemporada")
        self.add_tab(temporada.vboxTemporada, "Temporada")
        return
        
if __name__ == "__main__":
    t = Traza()
    sys.excepthook = debugwindow.show
    
    gtk.main()
    
